﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;

namespace Tp2
{
    public partial class Produits : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //Lorsqu'on clique sur rechercher
            if (this.IsPostBack)
            {
                //On recherche dans la BD si l'utilisateur existe

                SqlConnection connexion;
                SqlCommand commande;
                SqlDataReader lecteur;

                // Chaîne pour la connexion à la BD; spécifie le "driver" à utiliser
                // et l'emplacement de la base de données.
                String cheminBD = Server.MapPath("App_Data/TP2.mdf");
                String chaineConnexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + cheminBD + ";Integrated Security=True;User Instance=True";


                // Création d'un objet "OleDbConnection" avec la chaîne de connexion.
                connexion = new SqlConnection(chaineConnexion);
                // Ouverture de la connexion.
                connexion.Open();

                String requete = "SELECT * FROM disques WHERE titre LIKE '%" + txtNom.Value + "%'";

                //si on a choisi une catégorie
                if (this.txtCategorie.Value != "")
                    requete += " AND categorie='" + txtCategorie.Value + "'";

                //on ajoute le prix si la case n'est pas vide
                if (this.txtPrix.Value != "")
                    requete += " AND prix <='" + this.txtPrix.Value + "'";

                commande = new SqlCommand(requete, connexion);
                lecteur = commande.ExecuteReader();

                if (!lecteur.HasRows)
                {
                    //On affiche un message sans article
                    this.resultat.InnerHtml = "<p>Aucun résultat à la recherche</p>";
                }
                else
                {
                    //On affiche les résultat de la recherche et on compte le nombre d'items
                    int nbItems = 0;
                    this.resultat.InnerHtml = "";
                    while (lecteur.Read())
                    {
                        this.resultat.InnerHtml += "<div id=\"" + Convert.ToString(lecteur["titre"]) + "\"><p><span class=\"alignergauche\">Titre :</span> " + Convert.ToString(lecteur["titre"]) + "</p>";
                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Categorie :</span> " + Convert.ToString(lecteur["categorie"]) + "</p>";
                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Prix :</span> " + Convert.ToString(lecteur["prix"]) + " $</p>";
                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Quantité :</span> ";

                        int qte = Convert.ToInt32(lecteur["qte"]);
                        //Si la quantité est 0, on affiche un message "non disponible"
                        if (qte == 0)
                        {
                            this.resultat.InnerHtml += "Non disponible</p>";
                        }
                        else
                        {
                            this.resultat.InnerHtml += " " + qte.ToString() + " <a href=\"panier.aspx?noproduit=" + Convert.ToString(lecteur["noProduit"]) + "\">Ajouter l'article au panier</a></p>";
                        }

                        //On enleve les 00:00:00 à la fin de la date
                        String dt = Convert.ToString(lecteur["date_parution"]);
                        dt = dt.Substring(0, 10);

                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Date de parution :</span> " + dt + "</p>";
                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Bref Aperçu :</span> <img src=\"Images/Produits/" + Convert.ToString(lecteur["image"]) + "\" alt=\"" + Convert.ToString(lecteur["image"]) + "\" /></p>";
                        this.resultat.InnerHtml += "<div class=\"separateur\" ></div>";
                        this.resultat.InnerHtml += "</div>";

                        //On incrémente le nombre d'items
                        nbItems++;
                    }

                    //Si on a au moins un item, on affiche
                    if (nbItems > 0)
                        this.txtNbProduits.InnerHtml = nbItems.ToString()+" produit(s) correspondant à la recherche.";
                }
                //On ferme la bd
                lecteur.Close();
                connexion.Close();
            }
            else
            {
                //Si c'est le premier affichage, on affiche tous les produits avec le nombre de produits.

                int nbItems = 0;
                SqlConnection connexion;
                SqlCommand commande;
                SqlDataReader lecteur;

                // Chaîne pour la connexion à la BD; spécifie le "driver" à utiliser
                // et l'emplacement de la base de données.
                String cheminBD = Server.MapPath("App_Data/TP2.mdf");
                String chaineConnexion = "Data Source=.\\SQLEXPRESS;AttachDbFilename=" + cheminBD + ";Integrated Security=True;User Instance=True";


                // Création d'un objet "OleDbConnection" avec la chaîne de connexion.
                connexion = new SqlConnection(chaineConnexion);
                // Ouverture de la connexion.
                connexion.Open();


                //On va chercher tous les produits
                String requete = "SELECT * FROM disques";

                commande = new SqlCommand(requete, connexion);
                lecteur = commande.ExecuteReader();

                if (!lecteur.HasRows)
                {
                    //On affiche un message sans article
                    this.resultat.InnerHtml = "<p>Aucun produit dans l'inventaire.</p>";
                }
                else
                {
                    //On affiche les résultat de la recherche
                    this.resultat.InnerHtml = "";
                    while (lecteur.Read())
                    {
                        this.resultat.InnerHtml += "<div id=\"" + Convert.ToString(lecteur["titre"]) + "\"><p><span class=\"alignergauche\">Titre :</span> " + Convert.ToString(lecteur["titre"]) + "</p>";
                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Categorie :</span> " + Convert.ToString(lecteur["categorie"]) + "</p>";
                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Prix :</span> " + Convert.ToString(lecteur["prix"]) + " $</p>";
                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Quantité :</span> ";

                        int qte = Convert.ToInt32(lecteur["qte"]);
                        //Si la quantité est 0, on affiche un message "non disponible"
                        if (qte == 0)
                        {
                            this.resultat.InnerHtml += "Non disponible</p>";
                        }
                        else
                        {
                            this.resultat.InnerHtml += " " + qte.ToString() + " <a href=\"panier.aspx?noproduit=" + Convert.ToString(lecteur["noProduit"]) + "\">Ajouter l'article au panier</a></p>";
                        }

                        //On enleve les 00:00:00 à la fin de la date
                        String dt = Convert.ToString(lecteur["date_parution"]);
                        dt = dt.Substring(0, 10);

                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Date de parution :</span> " + dt + "</p>";
                        this.resultat.InnerHtml += "<p><span class=\"alignergauche\">Bref Aperçu :</span> <img src=\"Images/Produits/" + Convert.ToString(lecteur["image"]) + "\" alt=\"" + Convert.ToString(lecteur["image"]) + "\" /></p>";
                        this.resultat.InnerHtml += "<div class=\"separateur\" ></div>";
                        this.resultat.InnerHtml += "</div>";

                        //On incrémente le nombre de produits
                        nbItems++;
                    }
                }
                //On ferme la bd
                lecteur.Close();
                connexion.Close();

                //Si on a au moins un item, on affiche
                if (nbItems > 0)
                    this.txtNbProduits.InnerHtml = nbItems.ToString()+" produits dans l'inventaire";
            }
        }
    }
}